//package nancal.mp.mvc.devops
//
//import nancal.mp.client.integration.K8sClient
//import nancal.mp.db.mongo.JenkinsLanguageEnum
//import nancal.mp.model.K8sAppServiceStatusInfo
//import nancal.mp.util.setNamespace
//
//import nbcp.extend.ToYaml
//import java.io.*
//import nbcp.base.utils.*
//import org.slf4j.LoggerFactory
//import org.springframework.beans.factory.annotation.Autowired
//import org.springframework.web.bind.annotation.RequestMapping

//import org.springframework.web.bind.annotation.RequestMethod

//import org.springframework.web.bind.annotation.RestController

//
//
//@RequestMapping("/ops/k8s/deployment")
//@RestController
//@OpenAction
//class K8sController {
//    companion object {
//        private val logger = LoggerFactory.getLogger(this::class.java.declaringClass)
//    }
//
//    @Autowired
//    lateinit var k8sClient: K8sClient
//
////    @RequestMapping("/list", method = arrayOf(RequestMethod.POST))
////    fun list(
////        namespace: String,
////        name: String,
////        names: String,
////        productLineCode: String,
////        isReady: Boolean?,
////        language: JenkinsLanguageEnum?,
////        skip: Int,
////        take: Int
////    ): ListResult<K8sAppServiceStatusInfo> {
////        return k8sClient.list(namespace, name, names, productLineCode, isReady, language, skip, take.AsInt(99));
////    }
//
//
//    @RequestMapping("/sync-from-dev", method = arrayOf(RequestMethod.POST))
//    fun sync_dev(
//        fromHost: String,
//        fromNamespace: String,
//        namespace: String,
//        @Require name: String,
//        profile: String
//    ): JsonResult {
//        var ns = namespace.AsString("default")
//
//        //从 213 同步
//        sync_deployment(fromHost, fromNamespace, ns, name, profile)
//            .apply {
//                if (this.msg.HasValue) {
//                    return this;
//                }
//            }
//
//
//        //同步 Service
//        sync_service(fromHost, fromNamespace, ns, name).apply {
//            if (this.msg.HasValue) {
//                return this;
//            }
//        }
//
//
//        return JsonResult()
//    }
//
//    private fun sync_service(fromHost: String, fromNamespace: String, namespace: String, name: String): JsonResult {
//
//        var url =
//            HttpInvoke()("http://${fromHost.AsString("192.168.5.213")}/api/mp-integration/ops/k8s/service/get-service-yaml")
//        var yaml = url.doGet(StringMap("namespace" to fromNamespace, "name" to name))
//            .FromJson<ApiResult<String>>()?.data.AsString()
//
//
//        if (yaml.isEmpty()) {
//            return JsonResult.error("获取 K8sService :${fromNamespace}.${name} 失败")
//        }
//
//        var map = yaml.FromYamlText<JsonMap>()
//        map.setNamespace(namespace)
//
//        k8sClient.applyServiceYaml(map.ToYaml(), namespace, name)
//            .apply {
//                if (this.msg.HasValue) {
//                    return this;
//                }
//            }
//
//        return JsonResult()
//    }
//
//    private fun sync_deployment(
//        fromHost: String,
//        fromNamespace: String,
//        namespace: String,
//        name: String,
//        profile: String
//    ): JsonResult {
//        var url =
//            HttpInvoke()("http://${fromHost.AsString("192.168.5.213")}/api/mp-integration/ops/k8s/deployment/get-deployment-yaml")
//        var yaml = url.doGet(StringMap("namespace" to fromNamespace, "name" to name))
//            .FromJson<ApiResult<String>>()?.data.AsString()
//
//
//        if (yaml.isEmpty()) {
//            return JsonResult.error("获取不到 ${fromNamespace}.${name} 的Yaml")
//        }
//
//
//        var map = yaml.FromYamlText<JsonMap>()
//        map.setNamespace(namespace);
//
//        var envs =
//            (map.getValueByWbsPath("spec.template.spec.containers[].env") as List<List<MutableMap<String, Any?>>>).firstOrNull();
//        if (envs != null) {
//            envs.forEach {
//                if (it.get("name") != "PROFILE") {
//                    return@forEach
//                }
//
//                var v2 = it.getStringValue("value").AsString().split(",")
//                    .map {
//                        if (it.IsIn("dev", "test", "main")) {
//                            return@map profile
//                        }
//
//                        return@map it;
//                    }
//                    .toSet()
//                    .joinToString(",")
//
//                it.set("value", v2)
//            }
//        }
//
//
//        k8sClient.applyDeploymentYaml(map.ToYaml(), namespace, name)
//            .apply {
//                if (this.msg.HasValue) {
//                    return this;
//                }
//            }
//
//        return JsonResult()
//    }
//}